home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
cpp_libs
/
intrvews
/
xgrab.lha
/
xgrab
/
grabst
/
attribute.c
next >
Wrap
C/C++ Source or Header
|
1990-03-06
|
4KB
|
239 lines
/**
GRAB Graph Layout and Browser System
Copyright (c) 1989, Tera Computer Company
**/
#include "attribute.h"
/**
This file contains routines to convert strings into enumerated types
and vice versa
**/
#define MAXCOLORNAMES 5
#define MAXBOOLNAMES 2
#define MAXBRUSHNAMES 8
#define MAXSHAPENAMES 11
#define MAXSTATUSNAMES 3
typedef struct
{
char *name;
BOOL bool;
} BOOLPAIR;
typedef struct
{
char *name;
BRUSH brush;
} BRUSHPAIR;
typedef struct
{
char *name;
SHAPE shape;
} SHAPEPAIR;
typedef struct
{
char *name;
STATUS status;
} STATUSPAIR;
typedef struct
{
char *name;
COLOR color;
} COLORPAIR;
static BOOLPAIR BoolPairs[MAXBOOLNAMES] =
{
{ "false", FALSE },
{ "true", TRUE }
};
static STATUSPAIR StatusPairs[MAXSTATUSNAMES] =
{
{ "normal", NORMAL },
{ "dummy", DUMMY },
{ "default", DEFAULT_STATUS }
};
static COLORPAIR ColorPairs[MAXCOLORNAMES] =
{
{ "black", BLACK },
{ "gray", GRAY },
{ "white", WHITE },
{ "default", DEFAULT_COLOR },
{ "grey", GRAY }
};
static BRUSHPAIR BrushPairs[MAXBRUSHNAMES] =
{
{ "solid", SOLIDB },
{ "bsolid", BSOLIDB },
{ "dotted", DOTTEDB },
{ "bdotted", BDOTTEDB },
{ "dashed", DASHEDB },
{ "bdashed", BDASHEDB },
{ "default", DEFAULT_BRUSH },
{ "bold", BSOLIDB },
};
static SHAPEPAIR ShapePairs[MAXSHAPENAMES] =
{
{ "rectangle", RECTANGLE },
{ "circle", CIRCLE },
{ "diamond", DIAMOND },
{ "oval", OVAL },
{ "point", POINT },
{ "double_box", DOUBLE_BOX },
{ "default", DEFAULT_SHAPE },
{ "rect", RECTANGLE },
{ "box", RECTANGLE },
{ "ellipse", OVAL },
{ "dot", POINT }
};
/**
string-to-type routines all follow the same pattern. First, convert
all capital letters to lower case (case doesn't matter in strings).
Then, compare the string to the strings in the appropriate structure
above. If there's no match, return the default value.
**/
COLOR string_to_color(s)
char *s;
{
int i;
convert_to_lower(s);
for (i = 0; i < MAXCOLORNAMES; i++)
{
if (!strcmp(s, ColorPairs[i].name))
{
return ColorPairs[i].color;
}
}
return DEFAULT_COLOR;
}
STATUS string_to_status(s)
char *s;
{
int i;
convert_to_lower(s);
for (i = 0; i < MAXSTATUSNAMES; i++)
{
if (!strcmp(s, StatusPairs[i].name))
{
return StatusPairs[i].status;
}
}
return DEFAULT_STATUS;
}
BRUSH string_to_brush(s)
char *s;
{
int i;
convert_to_lower(s);
for (i = 0; i < MAXBRUSHNAMES; i++)
{
if (!strcmp(s, BrushPairs[i].name))
{
return BrushPairs[i].brush;
}
}
return DEFAULT_BRUSH;
}
SHAPE string_to_shape(s)
char *s;
{
int i;
convert_to_lower(s);
for (i = 0; i < MAXSHAPENAMES; i++)
{
if (!strcmp(s, ShapePairs[i].name))
{
return ShapePairs[i].shape;
}
}
return DEFAULT_SHAPE;
}
BOOL string_to_bool(s)
char *s;
{
int i;
convert_to_lower(s);
for (i = 0; i < MAXBOOLNAMES; i++)
{
if (!strcmp(s, BoolPairs[i].name))
{
return BoolPairs[i].bool;
}
}
return FALSE;
}
convert_to_lower(s)
char *s;
{
char *t;
for (t = s; *t != '\0'; t++)
{
if (*t >= 'A' && *t <= 'Z')
{
*t = *t - 'A' + 'a';
}
}
}
char *status_to_string(s)
STATUS s;
{
return StatusPairs[(int) s].name;
}
char *color_to_string(c)
COLOR c;
{
return ColorPairs[(int) c].name;
}
char *brush_to_string(b)
BRUSH b;
{
return BrushPairs[(int) b].name;
}
char *shape_to_string(s)
SHAPE s;
{
return ShapePairs[(int) s].name;
}
char *bool_to_string(b)
BOOL b;
{
return BoolPairs[(int) b].name;
}